﻿using FDEECommonTools;
using System;
using System.Collections.Generic;
using System.Data;

namespace FDEE.Model
{
    public class MemberFactory
    {

        /// <summary>
        /// 生成桩基
        /// </summary>
        /// <param name="ePType"></param>
        /// <param name="c"></param>
        /// <param name="value">桩长</param>
        /// <returns></returns>
        //public static MemberBase CreatMember(EPileType ePType, eSubType c,int value)
        //{
        //    return null;
        //}

        public static PileBase CreatMember(EPileType ePType, eSubType c, double pileLength,int pileDia= 1000 , int dowel = 1400)
        {
           
          
            PileBase ret = null;
            switch (ePType)
            {
                case EPileType.None:
                    return null;
                case EPileType.Type1:
                    ret = new PileCal(ePType, "", "", c, pileLength, pileDia, dowel);
                    break;
                case EPileType.Type2:
                    ret = new PileCal(ePType, "", "", c, pileLength, pileDia, dowel);
                    break;
                case EPileType.Type3:
                    ret = new PileCal(ePType, "", "", c, pileLength, pileDia, dowel);
                    break;
                case EPileType.Type4:                    
                    ret = new PileCal(ePType, "", "", c, pileLength, pileDia, dowel);
                    break;
                case EPileType.Type5:
                    ret = new PileCal(ePType, "", "", c, pileLength, pileDia, dowel);
                    break;
                case EPileType.Type6:
                    ret = new PileCal(ePType, "", "", c, pileLength, pileDia, dowel);
                    break;
                case EPileType.Type7:
                    ret = new PileCal(ePType, "", "", c, pileLength, pileDia, dowel);
                    break;
                case EPileType.Type1T:
                    ret = new PileCal(ePType, "", "", c, pileLength, pileDia, dowel);
                    break;
                case EPileType.Type600:
                    ret = new BPile600("", "", c, pileLength, 600,1000);
                    break;
                default:
                    break;
            }
            ret.SetConcreteClass();
            ret.SetConcreteVolume();
            ret.SetRebarList();
            return ret;

        }

        /// <summary>
        /// Mohakahali 桩帽专用，长度变化桩帽，宽高都是0.8m
        /// </summary>
        /// <param name="eFooting"></param>
        /// <param name="st"></param>
        /// <param name="Length"></param>
        /// <returns></returns>
        public static FootingBase CreatMember(string refName, EFootingType eFooting,eSubType st,int Length,int ccpile,int numpile,int sidepile)
        {
            FootingBase ret = null;
            int Height=800, Width=800;
            switch (eFooting)
            {
                case EFootingType.FMHK:
                    ret = new PileCapMHK(eFooting, "F-MHK", refName, st, Width, Length, Height, ccpile, numpile, sidepile);
                    break;
                default:
                    break;
            }
            ret.SetConcreteClass();
            ret.SetConcreteVolume();
            ret.SetRebarList();

            return ret;
        }

        /// <summary>
        /// 生成承台
        /// </summary>
        /// <param name="ePCType"></param>
        /// <param name="c"></param>
        /// <returns></returns>
        public static FootingBase CreatMember(EFootingType ePCType, eSubType c)
        {
            Dictionary<int, Dictionary<eDB, int>> dic = new Dictionary<int, Dictionary<eDB, int>>();
            Dictionary<int, Dictionary<eDB, int>> dic2 = new Dictionary<int, Dictionary<eDB, int>>();

            FootingBase ret = null;
            int Height, Length, Width;
            switch (ePCType)
            {
                case EFootingType.None:
                    return null;
                case EFootingType.F1PTL1:
                    Height = 1600;  //承台高度
                    Length = 4500;  //承台长度(横）
                    Width = 2000;   //承台宽度(顺）

                    //ret = new FPME41("F-PME4-1", "P-326", eSubType.C, Height, Length, Width);

                    dic = Footing4ParaEnum.GetFootingParaByType(ePCType, c);
                    //dic2 = Footing4ParaEnum.GetFootingPara2ByType(ePCType, c);
                    ret = new Footing4Cal1(ePCType, "F1-PTL1", "", c, Height, Length, Width, dic);
                    break;
                case EFootingType.FPL2:
                    Height = 1650;  //承台高度
                    Length = 4500;  //承台长度(横）
                    Width = 4500;   //承台宽度(顺）

                    //ret = new FPME41("F-PME4-1", "P-326", eSubType.C, Height, Length, Width);

                    dic = Footing4ParaEnum.GetFootingParaByType(ePCType, c);
                    //dic2 = Footing4ParaEnum.GetFootingPara2ByType(ePCType, c);
                    ret = new Footing4Cal1(ePCType, "F-PL2", "", c, Height, Length, Width, dic);
                    break;
                case EFootingType.FPTL2:
                    Height = 1600;  //承台高度
                    Length = 4500;  //承台长度(横）
                    Width = 2000 ;   //承台宽度(顺）

                    //ret = new FPME41("F-PME4-1", "P-326", eSubType.C, Height, Length, Width);

                    dic = Footing4ParaEnum.GetFootingParaByType(ePCType, c);
                    //dic2 = Footing4ParaEnum.GetFootingPara2ByType(ePCType, c);
                    ret = new Footing4Cal1(ePCType, "F-PTL2", "", c, Height, Length, Width, dic);
                    break;
                case EFootingType.FPME11:
                    Height = 1650;  //承台高度
                    Length = 4500;  //承台长度(横）
                    Width = 4500;   //承台宽度(顺）

                    //ret = new FPME41("F-PME4-1", "P-326", eSubType.C, Height, Length, Width);

                    dic = Footing4ParaEnum.GetFootingParaByType(ePCType, c);
                    //dic2 = Footing4ParaEnum.GetFootingPara2ByType(ePCType, c);
                    ret = new Footing4Cal2(ePCType, "F-PME11", "", c, Height, Length, Width, dic, dic2);
                    break;
                case EFootingType.FPME12:
                    Height = 1600;  //承台高度
                    Length = 2000;  //承台长度(横）
                    Width = 4500;   //承台宽度(顺）

                    //ret = new FPME41("F-PME4-1", "P-326", eSubType.C, Height, Length, Width);

                    dic = Footing4ParaEnum.GetFootingParaByType(ePCType, c);
                    //dic2 = Footing4ParaEnum.GetFootingPara2ByType(ePCType, c);
                    ret = new Footing4Cal2(ePCType, "F-PME12", "", c, Height, Length, Width, dic, dic2);
                    break;
                case EFootingType.F1PME3:
                    Height = 1800;  //承台高度
                    Length = 5600;  //承台长度(横）
                    Width = 5600;   //承台宽度(顺）

                    //ret = new FPME41("F-PME4-1", "P-326", eSubType.C, Height, Length, Width);

                    dic = Footing4ParaEnum.GetFootingParaByType(ePCType, c);
                    dic2 = Footing4ParaEnum.GetFootingPara2ByType(ePCType, c);
                    ret = new Footing4Cal2(ePCType, "F1-PME3", "", c, Height, Length, Width, dic, dic2);
                    break;
                //case EFootingType.F2PME3:
                //    Height = 1600;  //承台高度
                //    Length = 5600;  //承台长度(横）
                //    Width = 5600;   //承台宽度(顺）
                //                    //ret = new FPME42("F-PME4-2", "P-326", eSubType.C, Height, Length, Width);
                //    dic = Footing4ParaEnum.GetFootingParaByType(ePCType, c);
                //    ret = new Footing4Cal1(ePCType, "F2-PME3", "", c, Height, Length, Width, dic);
                //    break;

                case EFootingType.FPME41:
                    Height = 2000;  //承台高度
                    Length = 7000;  //承台长度(横）
                    Width = 4500;   //承台宽度(顺）

                    //ret = new FPME41("F-PME4-1", "P-326", eSubType.C, Height, Length, Width);

                    dic = Footing4ParaEnum.GetFootingParaByType(ePCType, c);
                    dic2 = Footing4ParaEnum.GetFootingPara2ByType(ePCType, c);
                    ret = new Footing4Cal2(ePCType,"F-PME4-1", "", c, Height, Length, Width, dic,dic2);
                    break;
                case EFootingType.FPME42:
                    Height = 1650;  //承台高度
                    Length = 5600;  //承台长度(横）
                    Width = 5600;   //承台宽度(顺）
                                    //ret = new FPME42("F-PME4-2", "P-326", eSubType.C, Height, Length, Width);
                    dic = Footing4ParaEnum.GetFootingParaByType(ePCType, c);
                    ret = new Footing4Cal1(ePCType,"F-PME4-1", "", c, Height, Length, Width, dic);
                    break;
                case EFootingType.F1PME5:
                    Height = 1800;  //承台高度
                    Length = 5600;  //承台长度(横）
                    Width = 5600;   //承台宽度(顺）

                    //ret = new FPME41("F-PME4-1", "P-326", eSubType.C, Height, Length, Width);

                    dic = Footing4ParaEnum.GetFootingParaByType(ePCType, c);
                    dic2 = Footing4ParaEnum.GetFootingPara2ByType(ePCType, c);
                    ret = new Footing4Cal2(ePCType, "F1-PME5", "", c, Height, Length, Width, dic, dic2);
                    break;
                case EFootingType.F2PME5:
                    Height = 1500;  //承台高度
                    Length = 4500;  //承台长度(横）
                    Width = 2000;   //承台宽度(顺）
                                    //ret = new FPME42("F-PME4-2", "P-326", eSubType.C, Height, Length, Width);
                    dic = Footing4ParaEnum.GetFootingParaByType(ePCType, c);
                    ret = new Footing4Cal1(ePCType, "F2-PME5", "", c, Height, Length, Width, dic);
                    break;

                case EFootingType.FPTM3S:
                    Height = 1800;  //承台高度
                    Length = 4500;  //承台长度(横）
                    Width = 4500;   //承台宽度(顺）

                    dic = Footing4ParaEnum.GetFootingParaByType(ePCType, c);
                    ret = new Footing4Cal1(ePCType,"F-PTM3S", "", c, Height, Length, Width, dic);
                    break;
                case EFootingType.F1PTM2:
                    Height = 1600;  //承台高度
                    Length = 4500;  //承台长度(横）
                    Width = 2000;   //承台宽度(顺）

                    dic = Footing4ParaEnum.GetFootingParaByType(ePCType, c);
                    ret = new Footing4Cal1(ePCType,"F1-PTM2", "", c, Height, Length, Width, dic);
                    break;
                case EFootingType.F2PTM2:
                    Height = 1600;  //承台高度
                    Length = 7000;  //承台长度(横）
                    Width = 2000;   //承台宽度(顺）

                    dic = Footing4ParaEnum.GetFootingParaByType(ePCType, c);
                    ret = new Footing4Cal1(ePCType,"F2-PTM2", "", c, Height, Length, Width, dic);
                    break;
                case EFootingType.F1PTM3:
                    Height = 1600;  //承台高度
                    Length = 4500;  //承台长度(横）
                    Width = 2000;   //承台宽度(顺）

                    dic = Footing4ParaEnum.GetFootingParaByType(ePCType, c);
                    ret = new Footing4Cal1(ePCType,"F1-PTM3", "", c, Height, Length, Width, dic);
                    break;
                case EFootingType.F2PTM3:
                    Height = 1600;  //承台高度
                    Length = 7000;  //承台长度(横）
                    Width = 2000;   //承台宽度(顺）

                    dic = Footing4ParaEnum.GetFootingParaByType(ePCType, c);
                    dic2 = Footing4ParaEnum.GetFootingPara2ByType(ePCType, c);
                    ret = new Footing4Cal2(ePCType,"F2-PTM3", "", c, Height, Length, Width, dic, dic2);
                    break;
                case EFootingType.FPTM3U:
                    Height = 1800;  //承台高度
                    Length = 7000;  //承台长度(横）
                    Width = 2000;   //承台宽度(顺）

                    dic = Footing4ParaEnum.GetFootingParaByType(ePCType, c);
                    dic2 = Footing4ParaEnum.GetFootingPara2ByType(ePCType, c);
                    ret = new Footing4Cal2(ePCType, "F-PTM3U", "", c, Height, Length, Width, dic, dic2);
                    break;
                case EFootingType.FPM1:
                    Height = 1650;  //承台高度
                    Length = 4500;  //承台长度(横）
                    Width = 4500;   //承台宽度(顺）

                    dic = Footing4ParaEnum.GetFootingParaByType(ePCType, c);
                    ret = new Footing4Cal1(ePCType,"F-PM1", "", c, Height, Length, Width, dic);
                    break;
                case EFootingType.FPTM1:
                    Height = 1500;  //承台高度
                    Length = 4500;  //承台长度(横）
                    Width = 2000;   //承台宽度(顺）

                    dic = Footing4ParaEnum.GetFootingParaByType(ePCType, c);
                    ret = new Footing4Cal1(ePCType,"F-PTM1", "", c, Height, Length, Width, dic);
                    break;
                case EFootingType.FPTM1S:
                    Height = 1650;  //承台高度
                    Length = 7000;  //承台长度(横）
                    Width = 2000;   //承台宽度(顺）

                    dic = Footing4ParaEnum.GetFootingParaByType(ePCType, c);
                    dic2 = Footing4ParaEnum.GetFootingPara2ByType(ePCType, c);
                    ret = new Footing4Cal2(ePCType,"F-PTM1S", "", c, Height, Length, Width, dic, dic2);
                    break;
                case EFootingType.F1PTM1U:
                    Height = 1500;  //承台高度
                    Length = 4500;  //承台长度(横）
                    Width = 2000;   //承台宽度(顺）

                    dic = Footing4ParaEnum.GetFootingParaByType(ePCType, c);               
                    ret = new Footing4Cal1(ePCType,"F1-PTM1U", "", c, Height, Length, Width, dic);
                    break;
                case EFootingType.F2PTM1U:
                    Height = 1500;  //承台高度
                    Length = 7000;  //承台长度(横）
                    Width = 2000;   //承台宽度(顺）

                    dic = Footing4ParaEnum.GetFootingParaByType(ePCType, c);
                    dic2 = Footing4ParaEnum.GetFootingPara2ByType(ePCType, c);
                    ret = new Footing4Cal2(ePCType,"F2-PTM1U", "", c, Height, Length, Width, dic, dic2);
                    break;
                case EFootingType.F1PTM1T:
                    Height = 1500;  //承台高度
                    Length = 4500;  //承台长度(横）
                    Width = 2000;   //承台宽度(顺）

                    dic = Footing4ParaEnum.GetFootingParaByType(ePCType, c);
                    ret = new Footing4Cal1(ePCType,"F1-PTM1T", "", c, Height, Length, Width, dic);
                    break;
                case EFootingType.F2PTM1T:
                    Height = 1500;  //承台高度
                    Length = 7000;  //承台长度(横）
                    Width = 2000;   //承台宽度(顺）

                    dic = Footing4ParaEnum.GetFootingParaByType(ePCType, c);
                    dic2 = Footing4ParaEnum.GetFootingPara2ByType(ePCType, c);
                    ret = new Footing4Cal2(ePCType,"F2-PTM1T", "", c, Height, Length, Width, dic, dic2);
                    break;
                case EFootingType.F1PTM2T:
                    Height = 1600;  //承台高度
                    Length = 4500;  //承台长度(横）
                    Width = 2000;   //承台宽度(顺）

                    dic = Footing4ParaEnum.GetFootingParaByType(ePCType, c);
                    ret = new Footing4Cal1(ePCType,"F1-PTM2T", "", c, Height, Length, Width, dic);
                    break;
                case EFootingType.F2PTM2T:
                    Height = 1600;  //承台高度
                    Length = 7000;  //承台长度(横）
                    Width = 2000;   //承台宽度(顺）

                    dic = Footing4ParaEnum.GetFootingParaByType(ePCType, c);
                    dic2 = Footing4ParaEnum.GetFootingPara2ByType(ePCType, c);
                    ret = new Footing4Cal2(ePCType,"F2-PTM2T", "", c, Height, Length, Width, dic, dic2);
                    break;
                case EFootingType.FPTM2S:
                    Height = 1800;  //承台高度
                    //Height = 2000;  //承台高度 P328
                    Length = 7000;  //承台长度(横）
                    Width = 2000;   //承台宽度(顺）

                    dic = Footing4ParaEnum.GetFootingParaByType(ePCType, c);
                    dic2 = Footing4ParaEnum.GetFootingPara2ByType(ePCType, c);
                    ret = new Footing4Cal2(ePCType, "F-PTM2S", "", c, Height, Length, Width, dic, dic2);
                    break;
                case EFootingType.FPTM2U:
                    Height = 1800;  //承台高度
                    //Height = 2000;  //承台高度 P328
                    Length = 7000;  //承台长度(横）
                    Width = 2000;   //承台宽度(顺）

                    dic = Footing4ParaEnum.GetFootingParaByType(ePCType, c);
                    dic2 = Footing4ParaEnum.GetFootingPara2ByType(ePCType, c);
                    ret = new Footing4Cal2(ePCType, "F-PTM2S", "", c, Height, Length, Width, dic, dic2);
                    break;
                case EFootingType.F1PTM3T:
                    Height = 1600;  //承台高度
                    Length = 4500;  //承台长度(横）
                    Width = 2000;   //承台宽度(顺）

                    dic = Footing4ParaEnum.GetFootingParaByType(ePCType, c);
                    ret = new Footing4Cal1(ePCType,"F1-PTM3T", "", c, Height, Length, Width, dic);
                    break;
                case EFootingType.F2PTM3T:
                    Height = 1600;  //承台高度
                    Length = 7000;  //承台长度(横）
                    Width = 2000;   //承台宽度(顺）

                    dic = Footing4ParaEnum.GetFootingParaByType(ePCType, c);
                    dic2 = Footing4ParaEnum.GetFootingPara2ByType(ePCType, c);
                    ret = new Footing4Cal2(ePCType,"F2-PTM3T", "", c, Height, Length, Width, dic, dic2);
                    break;
                case EFootingType.FPTM4:
                    Height = 1800;  //承台高度
                    Length = 7000;  //承台长度(横）
                    Width = 2000;   //承台宽度(顺）

                    dic = Footing4ParaEnum.GetFootingParaByType(ePCType, c);
                    dic2 = Footing4ParaEnum.GetFootingPara2ByType(ePCType, c);
                    ret = new Footing4Cal2(ePCType, "F2-PTM3T", "", c, Height, Length, Width, dic, dic2);
                    break;
                case EFootingType.FPTE2:
                    Height = 1400;  //承台高度
                    Length = 3600;  //承台长度(横）
                    Width = 1600;   //承台宽度(顺）

                    dic = Footing4ParaEnum.GetFootingParaByType(ePCType, c); 
                    ret = new Footing4Cal1(ePCType, "F-PTE2", "", c, Height, Length, Width, dic);
                    break;
                case EFootingType.FPTE3:
                    Height = 1400;  //承台高度
                    Length = 3600;  //承台长度(横）
                    Width = 1600;   //承台宽度(顺）

                    dic = Footing4ParaEnum.GetFootingParaByType(ePCType, c);
                    ret = new Footing4Cal1(ePCType, "F-PTE3", "", c, Height, Length, Width, dic);
                    break;
                case EFootingType.FPTE32:
                    Height = 1500;  //承台高度
                    Length = 3600;  //承台长度(横）
                    Width = 1600;   //承台宽度(顺）

                    dic = Footing4ParaEnum.GetFootingParaByType(ePCType, c);
                    ret = new Footing4Cal1(ePCType, "F-PTE3-2", "", c, Height, Length, Width, dic);
                    break;
                case EFootingType.FPTE7:
                    Height = 1500;  //承台高度
                    Length = 4500;  //承台长度(横）
                    Width = 2000;   //承台宽度(顺）

                    dic = Footing4ParaEnum.GetFootingParaByType(ePCType, c);
                    ret = new Footing4Cal1(ePCType, "F-PTE7", "", c, Height, Length, Width, dic);
                    break;
                case EFootingType.FPE11:
                    Height = 1350;  //承台高度
                    Length = 3600;  //承台长度(横）
                    Width = 1600;   //承台宽度(顺）

                    dic = Footing4ParaEnum.GetFootingParaByType(ePCType, c);
                    ret = new Footing4Cal1(ePCType,"F-PE1-1", "", c, Height, Length, Width, dic);
                    break;
                case EFootingType.FPE12:
                    Height = 1500;  //承台高度
                    Length = 4500;  //承台长度(横）
                    Width = 2000;   //承台宽度(顺）

                    dic = Footing4ParaEnum.GetFootingParaByType(ePCType, c);
                    ret = new Footing4Cal1(ePCType,"F-PE1-2", "", c, Height, Length, Width, dic);
                    break;
                case EFootingType.FPE13:
                    Height = 1500;  //承台高度
                    Length = 4500;  //承台长度(横）
                    Width = 2000;   //承台宽度(顺）

                    dic = Footing4ParaEnum.GetFootingParaByType(ePCType, c);
                    ret = new Footing4Cal1(ePCType,"F-PE1-3", "", c, Height, Length, Width, dic);
                    break;
                case EFootingType.FPE14:
                    Height = 1650;  //承台高度
                    Length = 4500;  //承台长度(横）
                    Width = 2000;   //承台宽度(顺）

                    dic = Footing4ParaEnum.GetFootingParaByType(ePCType, c);
                    ret = new Footing4Cal1(ePCType,"F-PE1-2", "", c, Height, Length, Width, dic);
                    break;
                case EFootingType.FPE21A:
                    Height = 1350;  //承台高度
                    Length = 3600;  //承台长度(横）
                    Width = 1600;   //承台宽度(顺）

                    dic = Footing4ParaEnum.GetFootingParaByType(ePCType, c);
                    ret = new Footing4Cal1(ePCType,"F-PE2-1A", "", c, Height, Length, Width, dic);
                    break;
                case EFootingType.FPE21B:
                    Height = 1500;  //承台高度
                    Length = 4500;  //承台长度(横）
                    Width = 2000;   //承台宽度(顺）

                    dic = Footing4ParaEnum.GetFootingParaByType(ePCType, c);
                    ret = new Footing4Cal1(ePCType,"F-PE2-1B", "", c, Height, Length, Width, dic);
                    break;
                case EFootingType.FPE22:
                    Height = 1500;  //承台高度
                    Length = 4500;  //承台长度(横）
                    Width = 2000;   //承台宽度(顺）

                    dic = Footing4ParaEnum.GetFootingParaByType(ePCType, c);
                    ret = new Footing4Cal1(ePCType,"F-PE2-2", "", c, Height, Length, Width, dic);
                    break;
                case EFootingType.FPE23:
                    Height = 1500;  //承台高度
                    Length = 4500;  //承台长度(横）
                    Width = 2000;   //承台宽度(顺）

                    dic = Footing4ParaEnum.GetFootingParaByType(ePCType, c);
                    ret = new Footing4Cal1(ePCType, "F-PE2-3", "", c, Height, Length, Width, dic);
                    break;
                case EFootingType.FPE31:
                    Height = 1500;  //承台高度
                    Length = 4500;  //承台长度(横）
                    Width = 2000;   //承台宽度(顺）

                    dic = Footing4ParaEnum.GetFootingParaByType(ePCType, c);
                    ret = new Footing4Cal1(ePCType,"F-PE3-1", "", c, Height, Length, Width, dic);
                    break;
                case EFootingType.FPE32:
                    int FW4 = 2500;
                    switch (c)
                    {
                        case eSubType.A:
                        case eSubType.B:
                        case eSubType.C:
                        case eSubType.D:
                        case eSubType.E:
                            FW4 = 2500;
                            break;
                        case eSubType.F:
                        case eSubType.G:
                            FW4 = 3000;
                            break;
                    }
                    Height = 1700;  //承台高度
                    Length = 2000+FW4;  //承台长度(横）
                    Width = 2000;   //承台宽度(顺）

                    dic = Footing4ParaEnum.GetFootingParaByType(ePCType, c);
                    ret = new Footing4Cal1(ePCType,"F-PE3-2", "", c, Height, Length, Width, dic);
                    break;
                case EFootingType.FPE42:
                 
                    Height = 1700;  //承台高度
                    Length = 4500;  //承台长度(横）
                    Width = 4500;   //承台宽度(顺）

                    dic = Footing4ParaEnum.GetFootingParaByType(ePCType, c);
                    ret = new Footing4Cal1(ePCType, "F-PE4-2", "", c, Height, Length, Width, dic);
                    break;
                default:
                    break;
            }
            ret.SetConcreteClass();
            ret.SetConcreteVolume();
            ret.SetRebarList();
            return ret;
        }

        /// <summary>
        /// 生成墩柱
        /// </summary>
        /// <param name="eCType"></param>
        /// <param name="c"></param>
        /// <param name="value">墩高</param>
        /// <returns></returns>
        public static ColumnBase CreatMember(eColumnType eCType, eSubType c, int value,string pierNo="")
        {
            ColumnBase ret = null;
            int uper=0, lower=0;
            int width = 0, length = 0;
            int headerWidth = 0,outerR=0,innerR=0,sideR=0;// 花瓶墩墩头参数组
            int llSide=0, wwSide = 0;// 倒角；
            double upL = 2500;
            double lowL = 2500;
            switch (c)
            {
                case eSubType.None:
                    throw new Exception("墩柱类别错误");
                case eSubType.A:
                    uper = 2250;
                    lower = 2250;
                    break;
                case eSubType.B:
                    uper = 2600;
                    lower = 2600;
                    break;
                case eSubType.C:
                    uper = 3300;
                    lower = 3300;
                    break;
                case eSubType.D:
                    uper = 4150;
                    lower = 4150;
                    break;
                default:
                    break;
            }
            switch (eCType)
            {
                case eColumnType.CPTE7:
                    uper = 2250;
                    lower = 2250;
                    ret = new CPTE7("C-PTE7", "", eCType, c, 1200, 1200, value, 150, uper, lower, eDB.DB32);
                    break;
                case eColumnType.CPTE32:
                    uper = 2600;
                    lower = 2600;
                    ret = new CPTE32("C-PTE32", "", eCType, c, 1300, 1000, value, 150, uper, lower, eDB.DB32);
                    break;
                case eColumnType.CPTE3:
                    uper = 2600;
                    lower = 2600;
                    ret = new CPTE3("C-PTE3", "", eCType, c, 1000, 1000, value, 150, uper, lower, eDB.DB32);
                    break;
              
                case eColumnType.CPTE2:
                    ret = new CPTE2("C-PTE2", "", eCType, c, 1000, 1000, value, 150, uper, lower, eDB.DB32);
                    break;
                case eColumnType.CPTM1:
                    //if (c == eSubType.C)
                    //{
                    //    uper = 2600;
                    //    lower = 2600;
                    //}
                    ret = new CPTM1("C-PTM1", pierNo, eCType,c, 1200, 1500, value, 200, uper, lower, eDB.DB32);
                    break;
                case eColumnType.CPTM1U:
                    if (c!=eSubType.C)
                    {
                        throw new Exception(string.Format("PTM1U墩柱子类别{0}错误", c.ToString()));
                    }
                    ret = new CPTM1U("C-PTM1U", "", eCType, c, 1200, 1500, value, 200, 4150, 4150, eDB.DB32);
                    break;
                case eColumnType.CPTM1T:
                    if (c != eSubType.B)
                    {
                        throw new Exception(string.Format("PTM1T墩柱子类别{0}错误", c.ToString()));
                    }
                    ret = new CPTM1T("C-PTM1T", "", eCType, c, 1200, 1500, value, 200, 2600, 2600, eDB.DB32);
                    break;
                case eColumnType.CPTM1S:
                    if ((int)c<2)
                    {
                        throw new Exception(string.Format("PTM1S墩柱子类别{0}错误", c.ToString()));
                    }
                    ret = new CPTM1S("C-PTM1S", "", eCType, c, 1200, 1500, value, 200, uper, lower, eDB.DB32);
                    break;
                case eColumnType.CPTM2:
                    ret = new CPTM2("C-PTM2", pierNo, eCType, c, 1200, 1500, value, 200, uper,lower, eDB.DB32);
                    break;
                case eColumnType.CPTM2T:
                    ret = new CPTM2T("C-PTM2T", pierNo, eCType, c, 1200, 1500, value, 200, uper, lower, eDB.DB32);
                    break;
                case eColumnType.CPTM2S:
                    if (c==eSubType.B||c== eSubType.C)
                    {
                         ret = new CPTM2S("C-PTM2S", "", eCType, c, 1200, 1700, value, 200, 2600, 2600, eDB.DB32);
                    }
                    else if (c == eSubType.D)
                    {
                        ret = new CPTM2S("C-PTM2S", "", eCType, c, 1200, 2000, value, 200, 4150, 4150, eDB.DB32);
                    }
                    else
                    {
                        throw new Exception("PTM2S型墩柱只有B、C类.");
                    }
                   
                    break;
                case eColumnType.CPTM3:
                    if (c != eSubType.C)
                    {
                        throw new Exception("PTM3型墩柱只有C类.");
                    }
                    if (c == eSubType.C)
                    {
                        uper = 2600;
                        lower = 2600;
                    }
                    ret = new CPTM3("C-PTM3", "", eCType, c, 1200, 1700, value, 200, 3300, 3300, eDB.DB32);
                    break;
                case eColumnType.CPTM3U:
                    if (c != eSubType.C)
                    {
                        throw new Exception("PTM3U型墩柱只有C类.");
                    }
                    if (c == eSubType.C)
                    {
                        uper = 2600;
                        lower = 2600;
                    }
                    ret = new CPTM3U("C-PTM3U", "", eCType, c, 1200, 1700, value, 200, 2600, 2600, eDB.DB32);
                    break;
                case eColumnType.CPTM3T:
                    if (c != eSubType.B)
                    {
                        throw new Exception("PTM3U型墩柱只有C类.");
                    }
                    ret = new CPTM3T("C-PTM3T", "", eCType, c, 1200, 1700, value, 200, 2600, 2600, eDB.DB32);
                    break;
                case eColumnType.CPTM3S:
                    if ((int)c <3 || (int)c>4)
                    {
                        throw new Exception("PTM3S型墩柱只有C或D类.");
                    }
                    ret = new CPTM3S("C-PTM3S", "", eCType, c, 1200, 2000, value, 200, 2600, 2600, eDB.DB32);
                    break;
                case eColumnType.CPME31:
                    switch (c)
                    {

                        case eSubType.A:
                            width = 2500;
                            length = 1100;
                            lowL = 5500;
                            upL = 2500;
                            break;
                        case eSubType.B:
                            width = 2500;
                            length = 1200;
                            lowL = 5500;
                            upL = 2500;
                            break;
                      
                        default:
                            throw new NotImplementedException("PME31墩柱暂未完成此类型建模.");
                    }
                    ret = new CPME31("C-PME31", "", eCType, c, width, length, 400, 7000, 4222, value, 8000, 1800, 5500, 2500, upL, lowL, eDB.DB32, 100, 150);
                    break;
                case eColumnType.CPME32:
                    // 花瓶参数组不随类别变化而变化
                    outerR = 4500;
                    innerR = 4000;
                    sideR = 20000;
                    uper = 3000;
                    if (c == eSubType.A)
                    {
                        headerWidth = 3700;
                        width = 1600;
                        length = 1200;
                        lower = 1700;
                    }
                    else if (c == eSubType.B)
                    {
                        headerWidth = 3700;
                        width = 1600;
                        length = 1200;
                        lower = 2500;
                    }
                  
                    llSide = 225;
                    wwSide = 250;

                    ret = new CPME32("C-PME32", "", eCType, c, width, length, value, uper, lower, eDB.DB32, headerWidth, outerR, innerR, sideR, wwSide, llSide);
                    break;
                case eColumnType.CPME41:
                    switch (c)
                    {
                        case eSubType.B:
                            width = 2700;
                            length = 1400;
                            lowL = 5500;
                            upL = 2500;
                            break;

                        default:
                            throw new NotImplementedException("PME31墩柱暂未完成此类型建模.");
                    }
                    ret = new CPME41("C-PME41", "", eCType, c, width, length, 400, 7100, 4342, value, 8000, 2000, 5500, 2500, upL, lowL, eDB.DB32, 100, 150);
                    break;
                case eColumnType.CPME42:
                    // 花瓶参数组不随类别变化而变化
                    outerR = 4500;
                    innerR = 4000;
                    sideR = 20000;
                    uper = 3000;
                    if (c == eSubType.A)
                    {
                        headerWidth = 3900;
                        width = 1800;
                        length = 1400;
                        lower = 1700;
                    }
                    else if (c == eSubType.B)
                    {
                        headerWidth = 4000;
                        width = 1900;
                        length = 1400;
                        lower = 2500;
                    }
                    else if (c == eSubType.C)
                    {
                        headerWidth = 4100;
                        width = 2000;
                        length = 1500;
                        lower = 3350;
                    }
                    else
                    {
                        headerWidth = 4100;
                        width = 2000;
                        length = 1700;
                        lower = 4200;
                    }
                    llSide = 225;
                    wwSide = 250;
                  
                    ret = new CPME42("C-PME42", "", eCType, c, width, length, value, uper, lower, eDB.DB32, headerWidth, outerR, innerR, sideR, wwSide, llSide);
                    break;
                case eColumnType.CPE12:
                    // 花瓶参数组不随类别变化而变化
                    outerR = 4500;
                    innerR = 4000;
                    sideR = 20000;
                    uper = 3000;
                    headerWidth = 3500;
                    llSide = 225;
                    wwSide = 250;
                    switch (c)
                    {
                        case eSubType.A:
                        case eSubType.B:
                            width = 1400;
                            length = 900;
                            lower = 1500;
                            break;
                        case eSubType.C:
                            width = 1400;
                            length = 900;
                            lower = 2000;
                            break;
                        case eSubType.D:
                            width = 1400;
                            length = 900;
                            lower = 2500;
                            break;
                        case eSubType.E:
                            width = 1400;
                            length = 900;
                            lower = 3000;
                            break;
                        case eSubType.F:
                            width = 1600;
                            length = 900;
                            lower = 3500;
                            headerWidth = 3700;
                            break;
                        default:
                            throw new NotImplementedException("PE12墩柱暂未完成此类型建模.");
                    }
                    ret = new CPE12("C-PE12", "", eCType, c, width, length, value, uper, lower, eDB.DB28, headerWidth,outerR,innerR,sideR,wwSide,llSide);
                    break;
                case eColumnType.CPE22:
                    headerWidth = 3500;
                    switch (c)
                    {
                        case eSubType.IM:
                            width = 1800;
                            length = 1100;
                            lower = 5000;
                            headerWidth = 3900;
                            break;
                        case eSubType.HM:
                            width = 1800;
                            length = 1100;
                            lower = 4500;
                            headerWidth = 3900;
                            break;
                        case eSubType.H:
                            width = 1800;
                            length = 1100;
                            lower = 4500;
                            headerWidth = 3900;
                            break;
                        case eSubType.G:
                            width = 1800;
                            length = 1100;
                            lower = 4000;
                            headerWidth = 3900;
                            break;
                        case eSubType.BM:
                            width = 1400;
                            length = 900;
                            lower = 1500;
                            break;
                        case eSubType.CM:
                            width = 1400;
                            length = 900;
                            lower = 2000;
                            break;
                        case eSubType.C:
                            width = 1400;
                            length = 900;
                            lower = 2000;
                            break;
                        case eSubType.B:
                        case eSubType.A:
                            width = 1400;
                            length = 900;
                            lower = 1500;
                            break;                     
                        default:
                            throw new NotImplementedException("PE12墩柱暂未完成此类型建模.");
                    }
                    ret = new CPE22("C-PE22", "", eCType, c, width, length, value,  3000, lower, eDB.DB28,250, 225, 4500,4000,20000, headerWidth);
                    break;
                case eColumnType.CPE31:
                    width = 1400;
                    length = 900;
                    switch (c)
                    {
                      
                        case eSubType.F:
                            //length = 1400;
                            lower = 4500;
                            headerWidth = 3500;
                            break;
                        case eSubType.G:
                            //width = 1700;
                            //length = 1100;
                            lower = 4500;
                            headerWidth = 3500;
                            break;
                        case eSubType.H:
                            width = 1500;
                            length = 1000;
                            lower = 4500;
                            headerWidth = 3600;
                            break;
                        default:
                            lower = 4000;
                            headerWidth = 3700;
                            break;
                    }
                    ret = new CPE31("C-PE31", "", eCType, c, width, length, value, 3000, lower, eDB.DB28, 250, 225, 4500, 4000, 20000, headerWidth);
                    break;
                case eColumnType.CPE32:
                    width = 1600;
                    length = 1000;
                    switch (c)
                    {
                        case eSubType.A:
                            width = 1500;
                            length = 1000;
                            lower = 2500;
                            headerWidth = 3600;
                            break;
                        case eSubType.B:
                            lower = 3000;
                            headerWidth = 3600;
                            break;
               
                        case eSubType.C:
                            lower = 3500;
                            headerWidth = 3700;
                            break;
                        case eSubType.F:
                        case eSubType.G:
                            //width = 1700;
                            length = 1100;
                            lower = 4000;
                            headerWidth = 3700;
                            break;
                        case eSubType.I:
                            width = 1700;
                            length = 1200;
                            lower = 5000;
                            headerWidth = 3800;
                            break;
                        default:
                            lower = 4000;
                            headerWidth = 3700;
                            break;
                    }
                    ret = new CPE32("C-PE32", "", eCType, c, width, length, value, 3000, lower, eDB.DB32, 250, 225, 4500, 4000, 20000, headerWidth);
                    break;
                case eColumnType.CPE42:
                    width = 1800;
                    length = 1400;
                    switch (c)
                    {
                        case eSubType.I:
                            width = 1800;
                            length = 1400;
                            lower = 5000;
                            headerWidth = 3900;
                            break;
                        default:
                            lower = 5000;
                            headerWidth = 3900;
                            break;
                    }
                    ret = new CPE42("C-PE42", "", eCType, c, width, length, value, 3000, lower, eDB.DB32, 250, 225, 4500, 4000, 20000, headerWidth);
                    break;
                case eColumnType.CPE21A:
                    switch (c)
                    {
                        case eSubType.BM:
                            width = 1400;
                            length = 900;
                            lower = 1500;
                            break;
                        case eSubType.CM:
                            width = 1400;
                            length = 900;
                            lower = 2000;
                            break;
                        case eSubType.B:
                        case eSubType.A:
                            width = 1400;
                            length = 900;
                            lower = 1500;
                            break;
                        default:
                            throw new NotImplementedException("PE12墩柱暂未完成此类型建模.");
                    }
                    //if(c.ToString().ToUpper().Contains("A")|| c.ToString().ToUpper().Contains("B")|| c.ToString().ToUpper().Contains("C")|| c.ToString().ToUpper().Contains("D")|| c.ToString().ToUpper().Contains("E"))
                    ret = new CPE21("C-PE21", "", eCType, c, 1400, 900, value, 3000, lower, eDB.DB28, 250, 225, 4500, 4000, 20000, 3500);
                    break;
                case eColumnType.CPE21B:
                    //if (c.ToString().ToUpper().Contains("F") || c.ToString().ToUpper().Contains("G") || c.ToString().ToUpper().Contains("H") || c.ToString().ToUpper().Contains("I"))
                        ret = new CPE21("C-PE21", "", eCType, c, 1400, 900, value, 3000, 1500, eDB.DB28, 250, 225, 4500, 4000, 20000, 3500);
                    break;
                case eColumnType.CPL2:
                    ret = new CPL2("C-PL2", "", eCType, c, 2100, 1000, value, 4000, 2100, eDB.DB32, 450, 225, 8000, 6000, 40000,4500);
                    break;
                case eColumnType.CPTL2:
                    ret = new CPTL2("C-PTL2", "", eCType, c,  1000, 1400, value, 200, 2600, 2600, eDB.DB32);
                    break;
                case eColumnType.C1PTL1:
                    ret = new C1PTL1("C1-PTL1", "", eCType, c, 1000, 1400, value, 200, 2600, 2600, eDB.DB32);
                    break;
                case eColumnType.C2PTL1:
                    ret = new C2PTL1("C2-PTL1", "", eCType, c, 1000, 1400, value, 200, 2600, 2600, eDB.DB32);
                    break;
                case eColumnType.CPM1:
                    switch (c)
                    {

                        case eSubType.A:
                        case eSubType.B:
                            width = 2500;
                            length = 1000;
                            lowL = 5500;
                            upL = 2500;
                            break;
                        case eSubType.C:
                            width = 2500;
                            length = 1100;
                            lowL = 5500;
                            upL = 3300;
                            break;
                        case eSubType.D:
                            width = 2500;
                            length = 1100;
                            lowL = 4150;
                            upL = 4150;
                            break;
                        default:
                            throw new NotImplementedException("PM1墩柱暂未完成此类型建模.");
                    }
                    ret = new CPM1("C-PM1", "", eCType, c, width, length, 400, 7000, 4222, value,8000 ,1650,5500,0, upL, lowL, eDB.DB32, 100, 150);
                    break;
                default:
                    break;
            }

            ret.SetRebarDistribute();
            ret.SetConcreteClass();
            ret.SetConcreteVolume();
            ret.SetRebarList();
            return ret;
        }

        /// <summary>
        /// 生成盖梁
        /// </summary>
        /// <param name="cbt"></param>
        /// <param name="width"></param>
        /// <returns></returns>
        public static CrossbeamBase CreatMember(ECrossBeamType cbt,int width,string piername="")
        {
            DataColumn dc;
            DataTable ElongTable = new DataTable("伸长量计算参数表");
            dc = new DataColumn("No", typeof(string));
            ElongTable.Columns.Add(dc);
            dc = new DataColumn("Location", typeof(double));
            ElongTable.Columns.Add(dc);
            dc = new DataColumn("k", typeof(double));
            ElongTable.Columns.Add(dc);
            dc = new DataColumn("μ", typeof(double));
            ElongTable.Columns.Add(dc);
            dc = new DataColumn("θst", typeof(double));
            ElongTable.Columns.Add(dc);
            dc = new DataColumn("θed", typeof(double));
            ElongTable.Columns.Add(dc);
            dc = new DataColumn("fp0_st", typeof(double));
            ElongTable.Columns.Add(dc);
            dc = new DataColumn("fp0_ed", typeof(double));
            ElongTable.Columns.Add(dc);
            dc = new DataColumn("fp_st", typeof(double));
            ElongTable.Columns.Add(dc);
            dc = new DataColumn("fp_ed", typeof(double));
            ElongTable.Columns.Add(dc);
            dc = new DataColumn("fp", typeof(double));
            ElongTable.Columns.Add(dc);
            dc = new DataColumn("dl", typeof(double));
            ElongTable.Columns.Add(dc);
            dc = new DataColumn("Ep", typeof(double));
            ElongTable.Columns.Add(dc);
            dc = new DataColumn("△L", typeof(double));
            ElongTable.Columns.Add(dc);
            CrossbeamBase ret;
            switch (cbt)
            {
                case ECrossBeamType.None:
                    throw new Exception("墩柱类别错误");
                case ECrossBeamType.BPTM1:
                    ret = new BPTM1("", piername, 2600, width, 0.5*width, 800,  2600, 1000, width - 1600);
                    break;
                case ECrossBeamType.BPTM1S:
                    ret = new BPTM1S("", piername, 2600, width, 0.5 * width, 800,  2600, 1000, width - 1600);
                    break;
                case ECrossBeamType.BPTM2U:
                    ret = new BPTM2U("", piername, 2800, width, 0.5 * width, 1000, 3000, 1400, width - 1600);
                    break;
                case ECrossBeamType.BPTM1U:
                    ret = new BPTM1U("", piername, 2600, width, 0.5 * width, 800, 2800, 1200, width - 1600);
                    break;
                case ECrossBeamType.BPTM1T:
                    ret = new BPTM1T("", piername, 2600, width, 0.5 * width, 800, 2600, 1000, width - 1600);
                    break;
                case ECrossBeamType.BPTM2:
                    ret = new BPTM2("", piername, 2700, width, 0.5 * width, 900,  2800, 1200, width - 1600);
                    break;
                //case ECrossBeamType.BPTM2T:
                //    ret = new BPTM2T("", piername, 2700, width, 0.5 * width, 900, 2800, 1200, width - 1500);
                //    break;
                case ECrossBeamType.BPTM2S:
                    ret = new BPTM2S("", piername, 2800, width, 0.5 * width, 1000, 2800, 1200, width - 1600);
                    break;
                case ECrossBeamType.BPTM2T:
                    ret = new BPTM2T("", piername, 2800, width, 0.5 * width, 1000, 3000, 1400, width - 1600);
                    break;
                //case ECrossBeamType.BPTM3:
                //    ret = new BPTM3("", "", 3000, width, 1200, leftwidth, 3200, 1600, width - 1600);
                //    break;
                case ECrossBeamType.BPTM3S:
                    ret = new BPTM3S("", piername, 3100, width, 0.5 * width, 1300,  3200, 1600, width - 1600);
                    break;
                case ECrossBeamType.BPTM3U:
                    ret = new BPTM3U("", piername, 3100, width, 0.5 * width, 1300,  3200, 1600, width - 1600);
                    break;
                case ECrossBeamType.BPTM3T:
                    ret = new BPTM3T("", piername, 3100, width, 0.5 * width, 1300,  3200, 1600, width - 1600);
                    break;
                case ECrossBeamType.BPTE2:
                    ret = new BPTE2("", piername, 2000, width, 0.5 * width, 700, 2400, 800, width - 1600);
                    break;
                case ECrossBeamType.BPTL2:
                    ret = new BPTL2("", piername, 2000, width, 0.5 * width, 700, 2400, 800, width - 1600);
                    break;
                case ECrossBeamType.BPTL1:
                    ret = new BPTL1("", piername, 2000, width, 0.5 * width, 700, 2400, 800, width - 1600);
                    break;
                case ECrossBeamType.BPTE32:
                    ret = new BPTE32("", piername, 2500, width, 0.5 * width, 700, 2400, 800, width - 1600);
                    break;
                case ECrossBeamType.BPTE3:
                    ret = new BPTE3("", piername, 2000, width, 0.5 * width, 700, 2400, 800, width - 1600);
                    break;
                case ECrossBeamType.BPTE7:
                    ret = new BPTE7("", piername, 2000, width, 0.5 * width, 700, 2400, 800, width - 1600);
                    break;
                case ECrossBeamType.BPME4:
                    ret = new BPME4("", piername, 2800, width, 0.5 * width, 1400, 3200, 1600, width - 1600);
                    break;
                case ECrossBeamType.BPL2:
                    ret = new BPL2("", piername, 2300, width, 0.5 * width, 700, 2400, 800, width - 1600);
                    break;
                default:
                    throw new Exception("墩柱类别错误");
            }
            ret.SetConcreteClass();
            ret.SetConcreteVolume();
            ret.SetTendonList(ref ElongTable);
            ret.SetRebarList();
          
            new ExcelHelper().TableToExcelForXLS(ElongTable, @"C:\FDEE_伸长量\Elongation of " + piername+".xls");
            return ret;
        }

        public static RampCrossbeamBase CreatMember(ECrossBeamType cbt, int width,string title, string piername = "")
        {
            RampCrossbeamBase ret;
            switch (cbt)
            {
                case ECrossBeamType.None:
                    throw new Exception("墩柱类别错误");
                #region 未核对
                case ECrossBeamType.BPE11:
                    ret = new BPE12("", piername, 700, width, 0.5 * width, 1200, width - 1500);
                    break;
                case ECrossBeamType.BPE13:
                    ret = new BPE12("", piername, 700, width, 0.5 * width, 1200, width - 1500);
                    break;
                case ECrossBeamType.BPE14:
                    ret = new BPE12("", piername, 700, width, 0.5 * width, 1200, width - 1500);
                    break;
                case ECrossBeamType.BPE23:
                    ret = new BPE23("", piername, 900, width, 0.5 * width, 1200, width - 1500);
                    break;
                case ECrossBeamType.BPE31:
                    ret = new BPE31("", piername, 1000, width, 0.5 * width, 1200, width - 1500);
                    break;
                #endregion
                case ECrossBeamType.BPE12:
                    ret = new BPE12("", piername, 700, width, 0.5 * width, 1200, width - 1500);
                    break;
                case ECrossBeamType.BPE21:
                    ret = new BPE21("", piername, 700, width, 0.5 * width, 1200,  width - 1500);
                    break;
                case ECrossBeamType.BPE22:
                    ret = new BPE22("", piername, 900, width, 0.5 * width, 1200,  width - 1500);
                    break;
                case ECrossBeamType.BPE32:
                    ret = new BPE32("", piername, 1200, width, 0.5 * width, 1200, width - 1500);
                    break;
                default:
                    throw new Exception("墩柱类别错误");
            }
            ret.SetConcreteClass();
            ret.SetConcreteVolume();
            ret.SetTendonList();
            ret.SetRebarList();
            return ret;
        }


        public static ECrossBeamType ColumnToCrossBeam(eColumnType ct)
        {
            //ECrossBeamType T= (ECrossBeamType)Convert.ToInt32(ct);
            return (ECrossBeamType)Convert.ToInt32(ct);
        }




        public static EFootingType FromColumnToFooting(eColumnType ft)
        {
            return (EFootingType)Convert.ToInt32(ft);

        }

        /// <summary>
        /// 根据基础类别获取墩柱类别
        /// </summary>
        /// <param name="ft"></param>
        /// <returns></returns>
        public static eColumnType FromFootingToColumn(EFootingType ft)
        {
            switch (ft)
            {
                case EFootingType.None:
                    break;
                case EFootingType.FPME41:
                    return eColumnType.CPME41;                    
                case EFootingType.FPME42:
                    return eColumnType.CPME42;
                case EFootingType.FPTM3S:
                    return eColumnType.CPTM3S;
                case EFootingType.FPTM1:
                    return eColumnType.CPTM1;
                case EFootingType.FPTM1S:
                    return eColumnType.CPTM1S;
                case EFootingType.FPTM2S:
                    return eColumnType.CPTM2S;
                case EFootingType.FPTM3U:
                    return eColumnType.CPTM3U;
                case EFootingType.FPTE2:
                    return eColumnType.CPTE2;
                default:
                    break;
            }
            return eColumnType.None;
        }
    }
}
